﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

namespace WeberMadeiras.Classes
{
    public class BasePage : System.Web.UI.Page
    {

        void context_PreRequestHandlerExecute(object sender, EventArgs e)
        {
            Page page = HttpContext.Current.CurrentHandler as Page;
            if (page != null)
            {
                page.PreInit += new EventHandler(page_PreInit);
                page.Init += new EventHandler(page_Init);
            }
        }

        void page_PreInit(object sender, EventArgs e)
        {
            Page page = sender as Page;
            if (page != null)
            {
                // define a master page das páginas, em runtime.
                page.MasterPageFile = "~/Site.Master";
            }
        }

        void page_Init(object sender, EventArgs e)
        {

            Page page = sender as Page;

            //
            // 0 - Registra scripts
            //
            //page.ClientScript.RegisterClientScriptBlock(this.GetType(), "MyScript",
            //                "<script language=javascript src='../Scripts/sistema.js'>");

            //
            // 1 - Registra os componentes básicos do menu da página
            //
            //registra o metodo javascript que carrega o menu ao carregar a página
            //((Main)page.Master).Body.Attributes.Add("onLoad", "initPaginaTest();");

            // Procura o conteudo principal para formatador os grids
            ContentPlaceHolder ctrPrincipal = (ContentPlaceHolder)page.Master.FindControl("form1").FindControl("MainContent");
            formatacaoRecursiva(ctrPrincipal);
        }
        // Obtem todos os GridViews da pagina, e associa um handler para RowCreated.
        // Este handler adiciona formatacao ao grid (que não foi possível adicionar diretamente via CSS).
        private void formatacaoRecursiva(Control ctl)
        {
            foreach (Control c in ctl.Controls)
            {
                if (c is GridView)
                {
                    GridView gv = c as GridView;

                    gv.RowCreated += new GridViewRowEventHandler(defaultGridView_RowCreated);
                }
                formatacaoRecursiva(c);
            }
        }
        //Parece que cada vez que sai o mouse a linha é criada novamente.
        protected void defaultGridView_RowCreated(object sender, GridViewRowEventArgs e)
        {
            if (e.Row.RowType == DataControlRowType.DataRow)
            {
                //adiciona o efeito do mouse sbore a linha
                e.Row.Attributes.Add("onmouseover", "this.className='HighlightRowStyle'");

                //Voltar o estilo da linha  quando o mouse sair delas ( normal, alternado ou selecionado )
                if (e.Row.RowState == DataControlRowState.Normal)
                {
                    e.Row.Attributes.Add("onmouseout", "this.className='RowStyle'");
                }
                else if (e.Row.RowState == DataControlRowState.Alternate)
                {
                    e.Row.Attributes.Add("onmouseout", "this.className='AltRowStyle'");
                }

                else if (e.Row.RowState == DataControlRowState.Selected)
                {
                    e.Row.Attributes.Add("onmouseout", "this.className='SelectedRowStyle'");
                }
            }
        }

    }
}